前一天我們介紹了監督式與非監督式學習,今天來介紹迴歸與分類問題。
講師接續上一堂課程的餐廳帳單例子來說明迴歸問題,我們來研究小費與帳單總金額之間的關係,假設我們要預測小費的金額,所以我們用不同特徵組合的數學函數來進行預測我們的目標值,一般在迴歸問題中,通常是使用均方誤差
來最小化預測的連續值與標籤的連續值之間的誤差,而在分類問題中,通常使用交叉熵
來最小化我們的預測類和標籤類之間的錯誤或錯誤分類。所以我們選擇使用總金額當作我們的標籤來查看預測結果,結果不是那麼的好,所以我們增加了性別的標籤來看說有沒有影響,而實際上做下來的結果是,帳單沒有因為性別的因素影響了小費的結果。
這是講師在課程中舉出的一個例子,實際上自己在做機器學習的特徵工程時,要如何選擇資料當中的標籤,就要看你對於領域知識的了解,或著是可以使用當中的一種隨機森林方法來進行特徵選擇,選擇要的欄位以及樹的深度(n_estimators)、要迭代的次數(n_jobs),程式會自動找出適合的特徵選擇結果,以及每個特徵所得到的特徵重要性評分。
feat_labels = ["item_1","item_2","item_3","item_4","item_5"]
forest = RandomForestClassifier(n_estimators=8, random_state=1, n_jobs=10)
forest.fit(X_train, y_train.astype('int'))
importances = forest.feature_importances_
indices = np.argsort(importances)[::-1]
for f in range(X_train.shape[1]):
print("%2d) %-*s %f" % (f + 1, 30, feat_labels[indices[f]], importances[indices[f]]))
>>>
1) item_1 0.4
2) item_2 0.3
3) item_3 0.15
4) item_4 0.1125
5) item_5 0.0875
講師提到說做機器學習就是一個實驗,而迴歸或是分類問題都可以被認為是預測問題,跟非監督是學習剛好相反,再來要討論的是這些資料的來源從何而來?這些資料都是使用到結構化數據來做,我們可以進行分類:
而一個常見的結構化數據來源是從資料倉儲當中取出來,資料倉儲有在前面的天數提到過(傳送門),這邊使用醫療資料集作為例子,假設我們想要預測寶寶什麼時候出生,可以在BigQuery中執行SQL語句來創建我們所需要的機器學習資料集。模型當中我們選擇母親的年齡,懷孕期間增加的體重,懷孕週數作為特徵標籤,而懷孕週數是一個連續的數字,是一個迴歸問題,所以從結構化數據中進行預測是非常普遍的,而這項資料集除了能預測懷孕週數,我們也能拿來預測嬰兒出生時的體重作為健康的指標,體重是連續的數字,所以也是迴歸問題,像這樣的例子很多,希望大家能夠熟悉迴歸問題和分類問題的例子。
今天先介紹到這,明天我們來介紹機器學習的模型與優化器。